Skip to content

feat(ui): implement commands#75

Merged
renefloor merged 8 commits intomain-design-systemfrom
feature/implement-commands
Mar 17, 2026
Merged

feat(ui): implement commands#75
renefloor merged 8 commits intomain-design-systemfrom
feature/implement-commands

Conversation

@renefloor
Copy link
Collaborator

@renefloor renefloor commented Mar 13, 2026

Submit a pull request

Linear: FLU-409

CLA

  • I have signed the Stream CLA (required).
  • The code changes follow best practices
  • Code changes are tested (add some information if not applicable)

Description of the pull request

This adds the command chip to the core library

Screenshots / Videos

image

Summary by CodeRabbit

  • New Features

    • Launched interactive design system gallery showcasing components with playgrounds and real-world examples.
    • Added theme customization studio with live color picker, brightness modes, and palette editing.
    • Introduced comprehensive component galleries (buttons, badges, avatars, inputs, and more) with interactive variants and usage patterns.
  • Chores

    • Updated CI/CD workflows for improved automation.
    • Enhanced linting rules for code quality.
    • Added project documentation and configuration files.

@renefloor renefloor requested a review from a team as a code owner March 13, 2026 16:46
@coderabbitai
Copy link

coderabbitai bot commented Mar 13, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5ab1d65e-6099-417c-8899-d5bb5e26d226

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR introduces a comprehensive Design System Gallery app and updates CI/CD workflows and lint configurations. It adds new GitHub workflows for publishing the gallery and updating golden files, expands the PR workflow's branch filters and semantic commit scopes, updates Flutter SDK to v6 in CI, modernizes linting rules, and implements an extensive Widgetbook-based gallery showcasing design system components with interactive playgrounds and static showcases.

Changes

Cohort / File(s) Summary
CI/CD Workflows
.github/workflows/pr_title.yml, .github/workflows/publish_gallery.yml, .github/workflows/stream_core_flutter_workflow.yml, .github/workflows/update_goldens.yml
Added publish gallery workflow triggered on main-design-system pushes; expanded PR workflow to include main-design-system branch and ui scope; added update goldens workflow for manual golden regeneration; upgraded checkout action to v6 and added IS_CI environment variable.
Lint & Analysis Configuration
all_lint_rules.yaml, analysis_options.yaml
Updated lint rules by removing 3 deprecated rules (always_require_non_null_named_parameters, avoid_returning_null, avoid_returning_null_for_future) and adding 27 new ones (annotate_redeclares, avoid_futureor_void, dangling_library_doc_comments, etc.); added formatter block with page_width 120 and trailing_commas preserve; disabled several new rules in analysis_options.
Documentation
CLAUDE.md, apps/design_system_gallery/README.md, apps/design_system_gallery/AGENTS.md, apps/design_system_gallery/devtools_options.yaml
Added comprehensive documentation: CLAUDE.md for Claude Code guidance, README for gallery features/setup, AGENTS.md for AI agent interaction patterns, and DevTools configuration file.
Gallery Infrastructure & Config
apps/design_system_gallery/.metadata, apps/design_system_gallery/lib/config/*, apps/design_system_gallery/lib/core/*, apps/design_system_gallery/lib/main.dart
Added Flutter metadata file, PreviewConfiguration and ThemeConfiguration observable classes for device/text/theme customization, PreviewWrapper for applying device frames and platform theming, core barrel exports, app entry point with Marionette binding initialization, and StreamSvgIcons utility.
Gallery App Shell & Home
apps/design_system_gallery/lib/app/gallery_app.dart, apps/design_system_gallery/lib/app/gallery_app.directories.g.dart, apps/design_system_gallery/lib/app/gallery_shell.dart, apps/design_system_gallery/lib/app/home.dart
Implemented main app widget with provider setup, generated Widgetbook directory tree (638 lines), responsive gallery shell with theme panel toggling and directory collapsing logic, and home page with logo, title, and feature chips.
Component Showcases (Accessories & Badge)
apps/design_system_gallery/lib/components/accessories/*, apps/design_system_gallery/lib/components/badge/*
Added playground and showcase builders for StreamAudioWaveformSlider, StreamEmoji, StreamFileTypeIcon, StreamBadgeCount, StreamBadgeNotification, and StreamOnlineIndicator with interactive controls and multi-section galleries.
Component Showcases (Avatar)
apps/design_system_gallery/lib/components/avatar/*
Implemented playground and showcase for StreamAvatar, StreamAvatarGroup, and StreamAvatarStack with size/color variants, usage patterns, and interactive configuration controls.
Component Showcases (Buttons & Common)
apps/design_system_gallery/lib/components/buttons/*, apps/design_system_gallery/lib/components/common/*
Added builders for StreamButton, StreamEmojiButton, StreamCheckbox, StreamFlex, and StreamProgressBar with interactive playgrounds, state variants, size scales, and real-world usage examples.
Component Showcases (Context Menu, Controls, Emoji)
apps/design_system_gallery/lib/components/context_menu/*, apps/design_system_gallery/lib/components/controls/*, apps/design_system_gallery/lib/components/emoji/*
Implemented StreamContextMenu, StreamCommandChip, StreamEmojiChip, StreamEmojiChipBar, and StreamEmojiPickerSheet showcases with action states, menu compositions, dialog integration, and interactive emoji selection.
Component Showcases (Message Composer, Reaction, Tiles)
apps/design_system_gallery/lib/components/message_composer/*, apps/design_system_gallery/lib/components/reaction/*, apps/design_system_gallery/lib/components/tiles/*
Added message composer playground and real-world examples with attachment previews (link, media, reply), stream reactions showcase with segmented/clustered variants, and list tile demonstrations with states and patterns.
Design System Primitives
apps/design_system_gallery/lib/primitives/*
Implemented showcases for StreamColors with copy-to-clipboard swatches, StreamIcons searchable grid, radius tokens with visual previews, and spacing scale with usage patterns and interactive cards.
Design System Semantics
apps/design_system_gallery/lib/semantics/*
Added elevation/shadow levels showcase with 3D stacked demo and interactive cards, and typography scale viewer with style cards, specs, and quick reference patterns.
Theme Customization UI
apps/design_system_gallery/lib/widgets/theme_studio/*
Implemented color customization panel with sections for brightness, brand, accent, text, background, border, state, and system colors; avatar palette editor with add/remove; helper widgets (ColorPickerTile, AvatarColorPairTile, SectionCard, ThemeStudioModeButton); and barrel export file.
Toolbar Widgets
apps/design_system_gallery/lib/widgets/toolbar/baselines_toggle.dart
Added BaselinesToggle widget for toggling text baseline visualization in debug mode.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • feat(ui): edit message #65: Both PRs modify .github/workflows/pr_title.yml (adding main-design-system branch, ui scope, and removing disabled gate), indicating coordinated CI/CD updates for design system workflows.

Poem

🐰 A gallery so grand with colors bright,
Components dancing left and right,
From badges bold to buttons new,
The design system shines right through,
With interactive showcases to explore,
Stream's beauty, now an open door! 🎨✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'feat(ui): implement commands' is vague and does not clearly describe the main change, which is adding the StreamCommandChip component to the design system gallery and core library. Use a more specific and descriptive title such as 'feat: add StreamCommandChip component to design system gallery' to clearly convey the primary change.
Description check ❓ Inconclusive The pull request description is incomplete; it lacks a detailed explanation of the changes beyond a single sentence, does not explain testing coverage, and provides minimal context about what was actually implemented. Expand the description to explain the changes in detail, describe how the command chip component works, clarify testing scope, and provide more comprehensive information about the implementation.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/implement-commands
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Tip

You can get early access to new features in CodeRabbit.

Enable the early_access setting to enable early access features such as new models, tools, and more.

@renefloor renefloor changed the base branch from main to main-design-system March 13, 2026 16:48
@renefloor renefloor changed the title Feature/implement commands feat(ui): implement commands Mar 13, 2026
@renefloor renefloor closed this Mar 13, 2026
@renefloor renefloor reopened this Mar 13, 2026
@codecov
Copy link

codecov bot commented Mar 17, 2026

Codecov Report

❌ Patch coverage is 67.46988% with 27 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (main-design-system@31586b0). Learn more about missing BASE report.

Files with missing lines Patch % Lines
...nents/message_composer/message_composer_input.dart 0.00% 18 Missing ⚠️
...rc/theme/components/stream_command_chip_theme.dart 36.36% 7 Missing ⚠️
...b/src/components/controls/stream_command_chip.dart 98.07% 1 Missing ⚠️
...tream_core_flutter/lib/src/theme/stream_theme.dart 0.00% 1 Missing ⚠️

❌ Your patch status has failed because the patch coverage (67.46%) is below the target coverage (80.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@                  Coverage Diff                  @@
##             main-design-system      #75   +/-   ##
=====================================================
  Coverage                      ?   35.32%           
=====================================================
  Files                         ?      117           
  Lines                         ?     3660           
  Branches                      ?        0           
=====================================================
  Hits                          ?     1293           
  Misses                        ?     2367           
  Partials                      ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

vertical: spacing.xxxs,
);

BorderRadius get borderRadius => const BorderRadius.all(Radius.circular(9999));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can use streamRadius here

color: effectiveBackgroundColor,
borderRadius: defaults.borderRadius,
),
constraints: const BoxConstraints(minHeight: 24),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe also add minHeight to theme?

size: 12,
color: effectiveIconColor,
),
SizedBox(width: defaults.spacing.xxxs),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can use Row.spacing instead

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally always extend the default from the actual themeData class StreamCommandChipThemeData so that we can be sure all the field are also in the themeData.

Like here we missed adding padding and borderRadius

@renefloor renefloor merged commit 3213862 into main-design-system Mar 17, 2026
3 of 4 checks passed
@renefloor renefloor deleted the feature/implement-commands branch March 17, 2026 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants